Object-oriented programming (OOP) is a programming paradigm that uses “objects”—data structures comprising properties and methods—and their interactions to design applications and computer programs. Programming techniques may include features such as information hiding, data abstraction, encapsulation, modularity, polymorphism, and inheritance. An object-oriented program or application may be viewed as a collection of cooperating objects wherein each object is capable of receiving messages, processing data, and sending messages to other objects.